package twitter;

public class Dendrogram{

	private double[] centroide;
	private Dendrogram hijoIzq;
	private Dendrogram hijoDer;
	
	private double distanciaAlCentroide;
	private Dendrogram cercano;
	
	public Dendrogram(){distanciaAlCentroide=Double.MAX_VALUE;}

	public Dendrogram(Dendrogram hijoI, Dendrogram hijoD,double[] centroide){
		distanciaAlCentroide=Double.MAX_VALUE;
		hijoIzq = hijoI;
		hijoDer = hijoD;
		this.centroide = centroide;
	}

	public double[] getCentroide() {
		return centroide;
	}


	public void setCentroide(double[] centroide) {
		this.centroide = centroide;
	}


	public Dendrogram getHijoIzq() {
		return hijoIzq;
	}


	public void setHijoIzq(Dendrogram hijoIzq) {
		this.hijoIzq = hijoIzq;
	}


	public Dendrogram getHijoDer() {
		return hijoDer;
	}


	public void setHijoDer(Dendrogram hijoDer) {
		this.hijoDer = hijoDer;
	}
	
	public double coseno(double[] t2) {
		double prodEscalar=0.0;
		for (int i = 0; i < t2.length; i++) {
			prodEscalar += t2[i]*centroide[i]; 
		}
		double moduloMio = calculaModulo();
		double moduloT2 = calculaModulo(t2);
		double coseno = prodEscalar/(moduloMio*moduloT2);
		//System.out.println("Coseno:"+coseno);
		return coseno;
	}
	
	private double calculaModulo() {
		return calculaModulo(centroide);
	}
	
	private double calculaModulo(double[] vector) {
		double modulo=0.0;
		for (int i = 0; i < vector.length; i++) {
			modulo+=vector[i]*vector[i];
			
		}
		return Math.sqrt(modulo);
	}
	
	public double getDistanciaAlCentroide() {
		return distanciaAlCentroide;
	}

	public void setDistanciaAlCentroide(double distanciaAlCentroide) {
		this.distanciaAlCentroide = distanciaAlCentroide;
	}

	public Dendrogram getCercano() {
		return cercano;
	}

	public void setCercano(Dendrogram cercano) {
		this.cercano = cercano;
	}

}
